package com.google.code.lf.gfm.model.grisbi.compte;

import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

import com.google.code.lf.commons.util.ToStringHelper;

/**
 * Bean représentant la liste des comptes dans le fichier de données <a href="http://grisbi.org/">Grisbi</a>.
 * <br/>Le binding bean/xml utilise <a href="https://jaxb.dev.java.net/">JAXB</a>.
 * 
 * @see GrisbiFile.
 */
@XmlRootElement(name="Comptes")
@XmlAccessorType(XmlAccessType.NONE)
@SuppressWarnings("unused")
public class Comptes {
	@XmlElement(name="Generalites")
	private CompteGeneralites generalites;

	@XmlElement(name="Compte")
	private List<Compte> comptes;

	public static class CompteGeneralites {
		@XmlElement(name="Ordre_des_comptes")
		private String ordreDesComptes;

		@XmlElement(name="Compte_courant")
		private int idCompteCourant;

		/* (non-Javadoc)
		 * @see java.lang.Object#toString()
		 */
		@Override
		public String toString() {
			return ToStringHelper.toString(this);
		}
	}

	/**
	 * Méthode <code>toString()</code> utilisant la réflection pour détailler l'objet.
	 * 
	 * @see ToStringHelper#toString()
	 */
	@Override
	public String toString() {
		return ToStringHelper.toString(this);
	}

	// -- Getters / Setters

	/**
	 * @return {@link Comptes#comptes}, la liste de {@link Compte}, jamais <code>null</code>.
	 */
	public List<Compte> getComptes() {
		if (comptes == null) comptes = new ArrayList<Compte>();
		return comptes;
	}
}
